【论文阅读基础知识整理】CNN经典结构的总结 您所在的位置:网站首页 本科论文怎么写 基本结构图 【论文阅读基础知识整理】CNN经典结构的总结

【论文阅读基础知识整理】CNN经典结构的总结

2024-07-12 15:18| 来源: 网络整理| 查看: 265

文章目录 【论文阅读基础知识整理】CNN经典结构的总结1. AlexNet主要贡献1:Dropout主要贡献2:LRN 2. VGG主要贡献1:小尺寸卷积层代替大尺寸卷积层网络缺点 3.ResNet主要贡献1:提出了残差的概念网络总结

【论文阅读基础知识整理】CNN经典结构的总结

​ 在论文阅读过程中,常常会遇到将提取特征后的特征图输入论文的网络结构中,而这些特征图大部分是通过现有实验的经典CNN结构得到的。本篇文章将一些经典的CNN结构进行介绍。

1. AlexNet

在这里插入图片描述

卷积层C1: 输入:227x227x3的图片 卷积:使用96个11x11x3的卷积核,步长为4,得到55x55x96的特征图,分为两组(论文指出用两个GPU分别进行计算),因此每组55x55x48 激活:将两组55x55x48的特征图输入到ReLU函数中 池化:池化运算尺寸3x3,步长为2,得到两组27x27x48的特征图 LRN:局部响应归一化(特征图维度不变,相当于一个归一化操作) 输出:两组27x27x48的特征图 卷积层C2: 输入:两组27x27x48的特征图 卷积:使用两组128个5x5x48的卷积核,步长为1,填充padding=2,输出两组27x27x128的特征图 激活:将两组27x27x128的特征图输入到ReLU函数中 池化:池化运算尺寸3x3,步长为2,得到两组13x13x128的特征图 LRN:局部响应归一化(特征图维度不变,相当于一个归一化操作) 输出:两组13x13x128的特征图 卷积层C3: 输入:两组13x13x128的特征图 卷积:使用两组192个3x3x128的卷积核,步长为1,填充padding=1,输出两组13x13x192的特征图 激活:将两组13x13x192的特征图输入到ReLU函数中 输出:两组13x13x192的特征图 卷积层C4: 输入:两组13x13x192的特征图 卷积:使用两组192个3x3x192的卷积核,步长为1,填充padding=1,输出两组13x13x192的特征图 激活:将两组13x13x192的特征图输入到ReLU函数中 输出:两组13x13x192的特征图 卷积层C5: 输入:两组13x13x192的特征图 卷积:使用两组128个3x3x192的卷积核,步长为1,填充padding=1,输出两组13x13x128的特征图 激活:将两组13x13x128的特征图输入到ReLU函数中 池化:池化运算尺寸3x3,步长为2,得到两组 输出:两组6x6x128的特征图 全连接层FC6: 输入:两组6x6x128的特征图 全连接:得到两组分别含2048个神经元的全连接层 激活:将两组分别含2048个神经元的全连接层输入到ReLU函数中 dropout:不激活某些神经元 输出:两组分别含2048个神经元的全连接层 全连接层FC7: 输入:两组分别含2048个神经元的全连接层 全连接:得到两组分别含2048个神经元的全连接层 激活:将两组分别含2048个神经元的全连接层输入到ReLU函数中 dropout:不激活某些神经元 输出:两组分别含2048个神经元的全连接层 输出层: 输入:两组分别含2048个神经元的全连接层 全连接:与1000个神经元进行全连接 输出:1000个float类型的值(即1000个类别的预测结果) 主要贡献1:Dropout

​ 论文提出了Dropout这个概念,主要目的是为了防止过拟合。主要过程即随机将神经元设置为0,则这个神经元无法进行前向传播和反向传播。主观来说就是删除掉部分神经元(常用在全连接层),使运算参数减少,防止过度训练特征。

主要贡献2:LRN

​ LRN是一种归一化的方式,目的在于提高模型的泛化能力。主观来说就是将响应反馈大的神经元,抑制反馈小的神经元。但LRN在如今网络结构应用性并没有很广。参数K,n,alpha,belta都是超参数,一般设置k=2,n=5,alpha=1*e-4,belta=0.75 在这里插入图片描述 tensorflow封装了一个LRN的函数tf.nn.lrn。

import tensorflow as tf import numpy as np import cv2 img=cv2.imread('D:/desktop/1.jpg') img = np.array(img.reshape([1,600,899,3])) y = tf.nn.lrn(input=img,depth_radius=2,bias=2,alpha=1,beta=1) with tf.Session() as sess: print(img) print('.......................................') print(y.eval()) 2. VGG

在这里插入图片描述 在这里插入图片描述 ​ VGG框架有两种结构,分别为VGG16和VGG19,两者的差别在于网络深度的不同。VGG结构相比AlexNet的改进在于使用连续的小尺度卷积核代替大尺度卷积核,更好的保存图像性质。该网络结构归结为13个卷积层,3个全连接层。

主要贡献1:小尺寸卷积层代替大尺寸卷积层

​ VGG通过将几个小尺寸(3x3)的卷积层的组合代替一个大尺寸的卷积层(5x5或7x7),这样加深了网络的深度,以提高性能。

网络缺点

​ 由于VGG采用了3个全连接层,因此训练的参数较大,花费时间长。

3.ResNet

​ ResNet是现在众多论文所用到的网络,它最主观的特点在于它的神经网络层数很深。那不免就会有疑问,我们不能在VGG的基础上进行网络层数的增加吗?ResNet论文给出了答案。 在这里插入图片描述 ​ 从上面两组曲线图可以看出当网络层数增加时,错误率却提高了,论文将这种现象称为退化问题。退化问题简单来说就是网络越深越不好训练,也就是更难拟合。

主要贡献1:提出了残差的概念

在这里插入图片描述

通过上图简单理解一下什么是残差,以及为什么使用残差 假设F是残差,F'是为引入残差求和的网络映射,H是引入残差后求和的网络映射 设将1映射为1.1 F'(1)=1.1,H'(1)=F(1)+1=1.1可推出残差F(1)=0.1 未引入残差,F'(1)作为映射参数(计算变化率的参数): 若输出1.1变为1.2:变化率(1.2-1.1)/1.1=1% 引入残差,F(1)作为映射参数(计算变化率的参数): 若输出1.1变为1.2:变化率[(1.2-1)-(1.1-1)]/(1.1-1)=100% 可以看到引入残差后,变化率更大也就意味着对输出变化更加敏感。这样对权重的更新会更加合理不会大改动。

​ 我们拿梯度下降的例子来说,我们在训练权重的时候,目的是为了使损失最小,此时的梯度近乎为0,也称是最优状态。假设当网络层数已经到一定层数达到最优状态,则下一次的权重更新,必须依旧保持最优状态,此时深层网络和浅层网络就没什么区别,反而增添了大量的参数导致信息丢失,降低网络效率。从客观角度分析,网络很难达到最优状态,那么当近乎接近最优状态时,引入残差F(x)可以很敏感的进行权重调整,以学习到新的特征,使其无限接近最优状态。

网络总结

在这里插入图片描述 ​ 上图为两个残差块,从结构可以看出最后的shape是没有变化的,目的是计算的残差维度和跳跃连接(那条实线)维度相同可以进行相加操作。(升维操作:1.全0填充;2.采用1*1卷积) 在这里插入图片描述 ​ 网络结构图基本由两种不同的残差块进行组合,ResNet50和ResNet101在论文中经常使用。 在这里插入图片描述 ​ 加残差结构和未加残差结构网络图的比较,实线指shortcut连接,虚线没有(维度不匹配)

总结来说,理解resnet只需要理解几个知识: 1.shortcut连接为了获得x 2.经过残差块获得H(x) 3.残差函数F(x) = H(x) - x 4.通过残差F(x)进行权重调整,理解为迈着小步稳步前进


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有